package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xinsoft.entity.dto.CusTaskDTO;
import com.xinsoft.entity.dto.CusTaskParam;
import com.xinsoft.entity.po.CusTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xinsoft.entity.po.CusTaskApprove;
import com.xinsoft.entity.po.CusTaskDeal;
import com.xinsoft.entity.vo.*;

import java.util.List;

/**
* @author ZYM
* @description 针对表【cus_task(任务主表)】的数据库操作Service
* @createDate 2023-07-31 14:00:37
*/
public interface CusTaskService extends IService<CusTask> {

    IPage<CusTaskPageVo> findPageListByParam(CusTaskParam param);

    CusTask tempSave(CusTaskDTO dto);

    CusTaskVo detail(Integer id);

    void del(List<Integer> ids);

    void submit(CusTaskDTO dto);

    /**
     * 处理-暂存
     */
    void dealTS(CusTaskDeal taskDeal);

    /**
     * 处理-提交
     */
    void dealSubmit(CusTaskDeal taskDeal);

    /**
     * 验收-暂存
     */
    void acceptanceTS(CusTaskApprove cusTaskApprove);

    /**
     * 验收-提交
     */
    void acceptanceSubmit(CusTaskApprove cusTaskApprove);

    void transfer(Integer taskId, Integer userId);

    /**
     * 任务处理详情
     *
     * @param taskDealId 任务处理id
     * @return {@link CusTaskDealDetailVo}
     */
    CusTaskDealDetailVo dealDetail(Integer taskDealId);

    CusTaskDealVo getNewestDealTS(Integer taskId);

    /**
     * 获取该任务暂存的验收记录
     * @param taskId
     * @return {@link CusTaskApproveVo}
     */
    CusTaskApproveVo getAcceptanceTS(Integer taskId);
}
